import VueRouter from 'vue-router'
// 增强路由
const methodArr = ['push', 'replace']

methodArr.forEach((method) => {
  // 缓存一份原始的push()和replace()方法，实现跳转功能
  const originMethod = VueRouter.prototype[method]
  // 重写push()和replace()方法
  VueRouter.prototype[method] = function (location, successCb, errorCb) {
    // 如果用户传递了成功或失败的回调，则正常调用push()和replace()方法
    if (successCb || errorCb) {
      return originMethod.call(this, location, successCb, errorCb)
      // 如果用户没有传任何回调，catch错误
    } else {
      return originMethod.call(this, location).catch((err) => err)
    }
  }
})
